package org.aspire.game.sprite;

import org.aspire.data.Renderer;
import org.aspire.game.Animation;
import org.aspire.game.Sprite;
import org.aspire.math.geom.Point;

public class AnimatedSprite extends Sprite {

	// ========================================================================
	// Constants
	// ========================================================================

	// ========================================================================
	// Static Methods
	// ========================================================================

	// ========================================================================
	// Fields
	// ========================================================================

	private Animation animation;
	
	// ========================================================================
	// Constructors
	// ========================================================================

	public AnimatedSprite(Animation animation, Point location) {
		this.animation = animation;
		this.setLocation(location.getX(), location.getY());
	}
	
	public AnimatedSprite(Animation animation) {
		this(animation, new Point());
	}
	
	public AnimatedSprite() {
		this(null);
	}
		
	
	// ========================================================================
	// Getters & Setters
	// ========================================================================

	public Animation getAnimation() {
		return this.animation;
	}

	// ========================================================================
	// Override Methods
	// ========================================================================

	@Override
	public void update(long elapsedTime) {
		super.update(elapsedTime);
		this.animation.update(elapsedTime);
	}
	
	@Override
	public void render(Renderer r) {
		this.setFrame(this.animation.getFrame());
		super.render(r);
	}
	
	// ========================================================================
	// Methods
	// ========================================================================

	// ========================================================================
	// Inner & Anonymous Classes
	// ========================================================================
}